RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像 您所在的位置:网站首页 虚拟机与宿主机传输文件 哔哩哔哩 RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像

RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像

2024-05-27 05:19| 来源: 网络整理| 查看: 265

前言

  上一篇搭建好了ubuntu宿主机开发环境,本篇的目标系统主要是开发linux+qt,所以需要刷上billdroot+Qt创建的系统,为了更好的熟悉原理和整个开发过程,选择从零开始搭建rk3568的sdk开发环境。

RK系列SDK简要介绍目录结构

  一个通用 Linux SDK (RV系类的sdk没有对工程目录包含有 buildroot、 debian、 app、 kernel、 u-boot、 device、 docs、 external等目录。  以下是RK系类的目录分类:

app:存放上层应用 app,主要是 qcamera/qfm/qplayer/settings 等一些应用程序。

buildroot:基于 buildroot (2018.02-rc3) 开发的根文件系统。

debian:基于 debian 10 开发的根文件系统,支持部分芯片。

device/rockchip:存放各芯片板级配置和 Parameter 文件,以及一些编译与打包固件的脚本和预备文件。

docs:存放芯片模块开发指导文档、 平台支持列表、 芯片平台相关文档、 Linux 开发指南等。

IMAGE:存放每次生成编译时间、 XML、 补丁和固件目录。

external:存放第三方相关仓库,包括音频、 视频、 网络、 recovery 等。

kernel:存放 kernel 4.4 或 4.19 开发的代码。

prebuilts:存放交叉编译工具链。

rkbin:存放 Rockchip 相关的 Binary 和工具。

rockdev:存放编译输出固件。

tools:存放 Linux 和 Windows 操作系统环境下常用工具。

u-boot:存放基于 v2017.09 版本进行开发的 uboot 代码。

yocto:基于 yocto gatesgarth 3.2 开发的根文件系统,支持部分芯片

  相对于以上的,对比下RV1109&RV1126的SDK目录,如下图:  

buildroot

  Linux SDK中 buildroot的 版本是 Buildroot-2018.02,其包含了基于 Linux 系统开发  用到的各种系统源码,驱动,工具,应用软件包。  

  buildroot 优势:

通过源码构建, 有很大的灵活性

方便的交叉编译环境, 可以进行快速构建

方便各系统组件配置及定制开发

源码准备

  从开发版提供的资料中拿到uboot,kernel,rootfs:

uboot:uboot是引导程序,芯片运行跑起来,然后引入kernel

kernel:linux的内核是加载后将会移植运行在内存中的核心

rootfs:这是文件系统,文件系统是kernel运行时需要加载一些驱动,库,存储等相关的其他一切相关的东西; &emsp编译uboot,kernel,然后制作文件系统:  

  (注意:一定要从购买开发板或者核心板的厂家获取,已经做好了ddr等外设的适配,包括开发板的外设,这是我们后续学习移植的基础,千万不要想着从零开始做,这个是不现实的,目前也没有人和公司这么做)  (注意:buildroot文件系统,并不是真的文件系统,是buildroot工具构建的文件系统,Yocto也是,Debian和Ubuntu则是真文件系统)

编译buildroot步骤一:安装buildroot依赖环境

  虚拟机安装编译buildroot环境,以下跟来回验证了:

  

步骤二:下载解压buildroot、uboot-kernel 传输到目标系统

  windows上先解压,得到完整文件:  

  

  然后传送到ubuntu上(使用samba服务,不清楚的参考上一篇安装samba服务)。  

  

  虚拟机上:  

步骤三:移动解压uboot-kernel

  注意:文件较大,不建议copy,一是会增加虚拟机所占存储,二是复制的时间很久。

  

  先解压uboot_kernel:

   

  这是个挺漫长的时间,花费大致5分钟。

步骤四:使用buildroot系统

  注意:rk3568支撑多个系统,按照SDK文档指定系统是相似的操作。  我们使用buildroot文件系统,将buildroot_20220510.tar.gz拷贝到rk356x文件夹:

  

  然后解压:

  差不多也是五分钟。

步骤五:查看编译命令

  

  编译uboot,编译内核,编译文件系统(buildroot)  

步骤六:适配屏幕

  屏幕,笔者使用的是厂家提供的lvds10.1寸屏幕,已经做好了驱动在sdk中,但是需要配置设备树:

  我们此时做个额外学习,先不配置hdmi和vga,这样hdmi和vga就不能显示,后续等我们验证hdmi不能显示后,再重新配置 该文件,进行显示:  

步骤七:编译整体

  由于uboot,kernel是没有争议的,但是文件系统是由好几个参数,所以要根据开发文档来,有个环境变量RK_ROOTFS_SYSTEM,他是什么则是什么系统,由此可见,他实际上是build编译文件系统的参数:  

  然后开始编译:

  

  查看“入坑二”,最终,使用sdk定义的路径是可以通过的:  

入坑入坑一:编译所有,定位到是文件系统失败问题

  

  编译错误:  

解决

  依次编译,开始哪里有错误:

  

  内核报的警告,但是依然过了:  

  

  仔细看信息,找到问题依次解决:  

  过程中,还有其他的错误,…其实就是环境缺少一些依赖,文档前面已经补上全部的依赖环境了。  特别注意,解决后要./build.sh cleanall清理后再编译。  最终依赖环境是:

入坑二:编译buildroot失败问题

  编译buildroot出现编译库错误。

原因

  新版本的buildroot添加了很多库,这些库跟/home/toppet/Linux的路径相关,配置的时候写成了绝对路径,所以编译buildroot无法通过。

解决

  方案商技术支持说一定要使用文档说的路径才可以通过,重新全部来一遍后,确实可以过,如下图:  



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有